<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 函数的形参只是占位 真正使用是在函数调用的时候传递的实际参数
        // 以后封装函数的时候 不确定该怎么写参数 先将函数功能写完 在思考你的代码中那些变量是不确定的全部做为形参
        function fn(a,b) {
            return a + b;
        }
        console.log(fn(10,20)) 
        // 函数传递基本类型数据
        function fn2(a){
            // 函数调用的时候会隐式存在一个操作，自动根据形参变量将实参进行赋值
            // let 形参a = 函数体外的实参a;

            // 修改的是局部变量 对外面的没有影响
            a = 30;
        }
        let a = 20;
        
        fn2(a);
        console.log(a);

        // 传递引用类型
        function fn3(b){
            // 函数调用 自动的let b = 全局b变量的栈区地址
            b=20;
        }
        let b = [1,2,3];
        fn3(b);
        console.log(b);//[1,2,3]


        function fn4(c){
            // 顺着内存地址修改堆区的数据
            c[0] = 200;
        }
        let c = [1,2,3];
        fn4(c);
        console.log(c);
    </script>
</body>

</html>